package lockOb;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.FutureTask;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class LockOb {

    public static void main(String[] args) throws InterruptedException {
        //在Java中，Lock是一个接口，位于java.util.concurrent.locks包下，它提供了比内置同步（如synchronized关键字）更高级的线程锁定机制。Lock接口及其实现类提供了锁的获取、释放、以及尝试获取锁等更为灵活的操作，支持公平锁与非公平锁、可重入特性、以及超时获取锁等功能。以下是一些常见的Lock接口的实现：
        //ReentrantLock：这是最常用的Lock实现类，支持重进入，即已经持有锁的线程可以再次获取该锁而不被阻塞。它有两种模式：公平锁和非公平锁，默认是非公平锁。公平锁会按照线程请求锁的顺序来分配锁，而非公平锁则允许插队，提高了一些争抢情况下的性能。
        //ReentrantReadWriteLock.ReadLock / ReentrantReadWriteLock.WriteLock：ReentrantReadWriteLock是一个读写锁，它维护了一对相关的锁，一个用于只读操作（ReadLock），另一个用于写入操作（WriteLock）。读锁可以被多个线程同时持有，而写锁是独占的。当没有写锁被持有时，多个读锁可以同时存在；一旦有写锁被获取，所有后续的读锁和写锁请求都会被阻塞。
        //StampedLock：这是一种更高级的锁，提供了乐观读锁、悲观读锁、写锁以及一个基于版本号的锁控制机制。StampedLock通过一个称为“邮戳”的长整型值来管理锁的状态，支持更复杂的并发控制策略。
        Lock lock =new ReentrantLock();






    }
}
